home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / M2000PWA.ZIP / NUV.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-04-11  |  10KB  |  522 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  TINTEGER003(500)
  23.     Integer  INTEGER004
  24.     Integer  INTEGER005
  25.     Integer  INTEGER006
  26.     Integer  INTEGER007
  27.     Integer  INTEGER008
  28.     Integer  INTEGER009
  29.     Integer  INTEGER010
  30.     Integer  INTEGER011
  31.     Integer  INTEGER012
  32.     String   STRING001
  33.     String   STRING002
  34.     String   TSTRING003(138)
  35.     String   TSTRING004(22)
  36.     String   STRING005
  37.     String   STRING006
  38.     String   TSTRING007(40)
  39.     String   STRING008
  40.     String   STRING009
  41.     String   TSTRING010(500)
  42.     String   TSTRING011(1000)
  43.     String   TSTRING012(1000)
  44.     String   STRING013
  45.     String   STRING014
  46.  
  47. ;------------------------------------------------------------------------------
  48.  
  49.     TSTRING004(1) = PPEPath() + "MATRIX.CFG"
  50.     TSTRING004(2) = PPEPath() + "FORM.1"
  51.     TSTRING004(3) = PPEPath() + "FORM.2"
  52.     TSTRING004(4) = PPEPath() + "FORM.3"
  53.     TSTRING004(5) = PPEPath() + "FORM.4"
  54.     TSTRING004(6) = PPEPath() + "FORM.5"
  55.     TSTRING004(7) = PPEPath() + "CONFIG.1"
  56.     TSTRING004(8) = PPEPath() + "CONFIG.2"
  57.     TSTRING004(9) = PPEPath() + "CONFIG.3"
  58.     TSTRING004(10) = PPEPath() + "CONFIG.4"
  59.     TSTRING004(11) = PPEPath() + "CONFIG.5"
  60.     TSTRING004(15) = PPEPath() + "TEXT.CFG"
  61.     TSTRING004(21) = PPEPath() + "VOTING.SCR"
  62.     TSTRING004(22) = PPEPath() + "USERS.VOT"
  63.     If (Exist(TSTRING004(1)) == 0) Then
  64.         PrintLn "@X0FConfiguration File Missing... (MATRIX.CFG)"
  65.         PrintLn "@X0FPlease Report this to the Sysop!"
  66.         End
  67.     Endif
  68.     If (Exist(TSTRING004(15)) == 0) Then
  69.         PrintLn "@X0FText Configuration File Missing... (TEXT.CFG)"
  70.         PrintLn "@X0FPlease Report this to the Sysop!"
  71.         End
  72.     Endif
  73.     FOpen 15, TSTRING004(15), 0, 0
  74.     For INTEGER006 = 1 To 38
  75.         FGet 15, TSTRING007(INTEGER006)
  76.     Next
  77.     FClose 15
  78.     FOpen 1, TSTRING004(1), 0, 0
  79.     For INTEGER006 = 1 To 138
  80.         FGet 1, TSTRING003(INTEGER006)
  81.     Next
  82.     FClose 1
  83.     Shell 1, INTEGER012, "DIR ", PPEPath() + "NUV\*.NUV /B >" + PPEPath() + "USERS.VOT"
  84.     FAppend 3, TSTRING004(22), 2, 0
  85.     FPutLn 3, "END"
  86.     FClose 3
  87.     :LABEL001
  88.     If (BOOLEAN002) Goto LABEL007
  89.     BOOLEAN002 = 0
  90.     BOOLEAN003 = 0
  91.     FOpen 4, TSTRING004(22), 0, 0
  92.     FGet 4, STRING005
  93.     If (Left(STRING005, 3) == "END") Then
  94.         End
  95.     Endif
  96.     STRING001 = ""
  97.     STRING002 = ""
  98.     STRING001 = PPEPath() + "NUV\" + STRING005
  99.     INTEGER006 = 1
  100.     While (((1 < 0) && (INTEGER006 >= Len(STRING001) - 4)) || ((1 >= 0) && (INTEGER006 <= Len(STRING001) - 4))) Do
  101.         STRING002 = STRING002 + Mid(STRING001, INTEGER006, 1)
  102.         INTEGER006 = INTEGER006 + 1
  103.     EndWhile
  104.     STRING002 = STRING002 + ".NFO"
  105.     FOpen 2, STRING001, 0, 0
  106.     FGet 2, STRING013
  107.     FGet 2, INTEGER007
  108.     FGet 2, INTEGER008
  109.     FGet 2, INTEGER009
  110.     FGet 2, INTEGER010
  111.     If (INTEGER010 <> 0) Then
  112.         For INTEGER006 = 1 To INTEGER010
  113.             FGet 2, TSTRING011(INTEGER006)
  114.         Next
  115.     Endif
  116.     FGet 2, INTEGER011
  117.     If (INTEGER011 <> 0) Then
  118.         For INTEGER006 = 1 To INTEGER011
  119.             FGet 2, TSTRING012(INTEGER006)
  120.         Next
  121.     Endif
  122.     FClose 2
  123.     If (INTEGER010 > 0) Then
  124.         For INTEGER006 = 1 To INTEGER010
  125.             If (U_Name() == Upper(TSTRING011(INTEGER006))) BOOLEAN003 = 1
  126.         Next
  127.     Endif
  128.     :LABEL002
  129.     If (BOOLEAN003) Goto LABEL006
  130.     Color 15
  131.     Cls
  132.     DispFile TSTRING004(21), 1
  133.     AnsiPos TSTRING003(101), TSTRING003(100)
  134.     Print TSTRING003(102) + STRING013
  135.     AnsiPos TSTRING003(104), TSTRING003(103)
  136.     Print TSTRING003(105) + INTEGER007
  137.     AnsiPos TSTRING003(107), TSTRING003(106)
  138.     Print TSTRING003(108) + INTEGER008
  139.     AnsiPos TSTRING003(110), TSTRING003(109)
  140.     Print TSTRING003(111) + INTEGER009
  141.     For INTEGER006 = 1 To TSTRING003(114)
  142.         AnsiPos TSTRING003(113) - 2, TSTRING003(112) + INTEGER006 - 1
  143.         If (TSTRING012(INTEGER006) <> "") Print TSTRING003(131) + TSTRING003(132) + "@X0F " + Left(TSTRING012(INTEGER006), TSTRING003(116))
  144.     Next
  145.     AnsiPos TSTRING003(119), TSTRING003(118)
  146.     Print TSTRING003(129) + TSTRING003(117)
  147.     INTEGER005 = 1
  148.     BOOLEAN001 = 0
  149.     :LABEL003
  150.     If (BOOLEAN003) Goto LABEL005
  151.     STRING006 = Inkey()
  152.     Select Case (STRING006)
  153.         Case " "
  154.             INTEGER005 = INTEGER005 + 1
  155.             If (INTEGER005 == 5) Then
  156.                 INTEGER005 = 1
  157.                 AnsiPos TSTRING003(128), TSTRING003(127)
  158.                 Print TSTRING003(130) + TSTRING003(126)
  159.                 AnsiPos TSTRING003(119), TSTRING003(118)
  160.                 Print TSTRING003(129) + TSTRING003(117)
  161.                 Goto LABEL004
  162.             Endif
  163.             If (INTEGER005 == 2) Then
  164.                 AnsiPos TSTRING003(119), TSTRING003(118)
  165.                 Print TSTRING003(130) + TSTRING003(117)
  166.                 AnsiPos TSTRING003(122), TSTRING003(121)
  167.                 Print TSTRING003(129) + TSTRING003(120)
  168.             Endif
  169.             If (INTEGER005 == 3) Then
  170.                 AnsiPos TSTRING003(122), TSTRING003(121)
  171.                 Print TSTRING003(130) + TSTRING003(120)
  172.                 AnsiPos TSTRING003(125), TSTRING003(124)
  173.                 Print TSTRING003(129) + TSTRING003(123)
  174.             Endif
  175.             If (INTEGER005 == 4) Then
  176.                 AnsiPos TSTRING003(125), TSTRING003(124)
  177.                 Print TSTRING003(130) + TSTRING003(123)
  178.                 AnsiPos TSTRING003(128), TSTRING003(127)
  179.                 Print TSTRING003(129) + TSTRING003(126)
  180.             Endif
  181.             :LABEL004
  182.             If ((STRING006 == "LEFT") || (STRING006 == "4")) Then
  183.                 If (INTEGER005 > 1) INTEGER005 = INTEGER005 - 1
  184.                 If (INTEGER005 == 1) Then
  185.                     AnsiPos TSTRING003(122), TSTRING003(121)
  186.                     Print TSTRING003(130) + TSTRING003(120)
  187.                     AnsiPos TSTRING003(119), TSTRING003(118)
  188.                     Print TSTRING003(129) + TSTRING003(117)
  189.                 Endif
  190.                 If (INTEGER005 == 2) Then
  191.                     AnsiPos TSTRING003(125), TSTRING003(124)
  192.                     Print TSTRING003(130) + TSTRING003(123)
  193.                     AnsiPos TSTRING003(122), TSTRING003(121)
  194.                     Print TSTRING003(129) + TSTRING003(120)
  195.                 Endif
  196.                 If (INTEGER005 == 3) Then
  197.                     AnsiPos TSTRING003(128), TSTRING003(127)
  198.                     Print TSTRING003(130) + TSTRING003(126)
  199.                     AnsiPos TSTRING003(125), TSTRING003(124)
  200.                     Print TSTRING003(129) + TSTRING003(123)
  201.                 Endif
  202.             Endif
  203.         Case "RIGHT", "6"
  204.             If (INTEGER005 < 4) INTEGER005 = INTEGER005 + 1
  205.             If (INTEGER005 == 2) Then
  206.                 AnsiPos TSTRING003(119), TSTRING003(118)
  207.                 Print TSTRING003(130) + TSTRING003(117)
  208.                 AnsiPos TSTRING003(122), TSTRING003(121)
  209.                 Print TSTRING003(129) + TSTRING003(120)
  210.             Endif
  211.             If (INTEGER005 == 3) Then
  212.                 AnsiPos TSTRING003(122), TSTRING003(121)
  213.                 Print TSTRING003(130) + TSTRING003(120)
  214.                 AnsiPos TSTRING003(125), TSTRING003(124)
  215.                 Print TSTRING003(129) + TSTRING003(123)
  216.             Endif
  217.         Case 4
  218.             AnsiPos TSTRING003(125), TSTRING003(124)
  219.             Print TSTRING003(130) + TSTRING003(123)
  220.             AnsiPos TSTRING003(128), TSTRING003(127)
  221.             Print TSTRING003(129) + TSTRING003(126)
  222.     End Select
  223.     If (STRING006 == Chr(13)) Then
  224.         BOOLEAN003 = 1
  225.     Endif
  226.     Goto LABEL003
  227.     :LABEL005
  228.     Select Case (INTEGER005)
  229.         Case 1
  230.             INTEGER007 = INTEGER007 + 1
  231.             INTEGER010 = INTEGER010 + 1
  232.             Gosub LABEL016
  233.             Gosub LABEL013
  234.             BOOLEAN003 = 1
  235.             End
  236.         Case 2
  237.             INTEGER008 = INTEGER008 + 1
  238.             INTEGER010 = INTEGER010 + 1
  239.             Gosub LABEL016
  240.             Gosub LABEL013
  241.             BOOLEAN003 = 1
  242.             End
  243.         Case 3
  244.             INTEGER009 = INTEGER009 + 1
  245.             INTEGER010 = INTEGER010 + 1
  246.             Gosub LABEL013
  247.             BOOLEAN003 = 1
  248.             End
  249.         Case 4
  250.             Gosub LABEL008
  251.             BOOLEAN003 = 0
  252.     End Select
  253.     Goto LABEL002
  254.     :LABEL006
  255.     Goto LABEL001
  256.     :LABEL007
  257.     FClose 4
  258.     End
  259.     :LABEL008
  260.     If (Exist(STRING002) == 0) Then
  261.         Return
  262.     Else
  263.         FOpen 4, STRING002, 0, 0
  264.         BOOLEAN001 = 0
  265.         :LABEL009
  266.         If (BOOLEAN001) Goto LABEL010
  267.         FGet 4, STRING008
  268.         If (STRING008 == "END") BOOLEAN001 = 1
  269.         If (STRING008 == "000-555-000") Then
  270.             FGet 4, STRING008
  271.             If (STRING008 == 0) Return
  272.             For INTEGER006 = 1 To STRING008
  273.                 FGet 4, TSTRING010(INTEGER006)
  274.             Next
  275.             BOOLEAN001 = 1
  276.         Endif
  277.         Goto LABEL009
  278.         :LABEL010
  279.         FClose 4
  280.         Color 15
  281.         FOpen 4, TSTRING004(11), 0, 0
  282.         FGet 4, INTEGER004
  283.         For INTEGER006 = 1 To INTEGER004
  284.             FGet 4, STRING008
  285.             FGet 4, STRING008
  286.             FGet 4, TINTEGER003(INTEGER006 * 2)
  287.             FGet 4, TINTEGER003(INTEGER006 * 2 + 1)
  288.         Next
  289.         FClose 4
  290.     Endif
  291.     If (Exist(STRING002) == 0) Then
  292.         Return
  293.     Else
  294.         FOpen 4, STRING002, 0, 0
  295.         BOOLEAN001 = 0
  296.         :LABEL011
  297.         If (BOOLEAN001) Goto LABEL012
  298.         FGet 4, STRING008
  299.         If (STRING008 == "END") BOOLEAN001 = 1
  300.         If (STRING008 == "000-555-000") Then
  301.             FGet 4, STRING008
  302.             If (STRING008 == 0) Return
  303.             For INTEGER006 = 1 To STRING008
  304.                 FGet 4, TSTRING010(INTEGER006)
  305.             Next
  306.             BOOLEAN001 = 1
  307.         Endif
  308.         Goto LABEL011
  309.         :LABEL012
  310.         FClose 4
  311.         Color 15
  312.         Cls
  313.         FOpen 4, TSTRING004(11), 0, 0
  314.         FGet 4, INTEGER004
  315.         For INTEGER006 = 1 To INTEGER004
  316.             FGet 4, STRING008
  317.             FGet 4, STRING008
  318.             FGet 4, TINTEGER003(INTEGER006 * 2)
  319.             FGet 4, TINTEGER003(INTEGER006 * 2 + 1)
  320.         Next
  321.         FClose 4
  322.         DispFile TSTRING004(6), 1
  323.         If (TSTRING003(134) <> "") Then
  324.             TSTRING003(134) = "@X0F"
  325.         Endif
  326.         For INTEGER006 = 1 To INTEGER004
  327.             AnsiPos TINTEGER003(INTEGER006 * 2 + 1), TINTEGER003(INTEGER006 * 2)
  328.             Print TSTRING003(134) + TSTRING010(INTEGER006)
  329.         Next
  330.         AnsiPos 1, TSTRING003(133)
  331.         More
  332.         FClose 4
  333.     Endif
  334.     Return
  335.     :LABEL013
  336.     STRING001 = PPEPath() + "NUV\" + STRING005
  337.     Delete STRING001
  338.     FCreate 1, STRING001, 2, 0
  339.     FOpen 1, STRING001, 2, 0
  340.     FPutLn 1, STRING013
  341.     FPutLn 1, INTEGER007
  342.     FPutLn 1, INTEGER008
  343.     FPutLn 1, INTEGER009
  344.     FPutLn 1, INTEGER010
  345.     If (INTEGER010 == 1) Then
  346.         FPutLn 1, Upper(U_Name())
  347.     Else
  348.         For INTEGER006 = 1 To INTEGER010 - 1
  349.             FPutLn 1, TSTRING011(INTEGER006)
  350.         Next
  351.         FPutLn 1, Upper(U_Name())
  352.     Endif
  353.     If (INTEGER011 <> 0) Then
  354.         FPutLn 1, INTEGER011
  355.         For INTEGER006 = 1 To INTEGER011
  356.             FPutLn 1, TSTRING012(INTEGER006)
  357.         Next
  358.     Else
  359.         FPutLn 1, "0"
  360.     Endif
  361.     FClose 1
  362.     Gosub LABEL014
  363.     Return
  364.     :LABEL014
  365.     STRING014 = Upper(STRING013)
  366.     If (INTEGER007 == TSTRING003(95)) Then
  367.         If (TSTRING003(97) == 0) Then
  368.             GetAltUser U_RecNum(STRING014)
  369.             U_Sec = TSTRING003(97)
  370.             PutUser
  371.             Delete STRING001
  372.             Delete STRING002
  373.             Goto LABEL015
  374.         Endif
  375.         For INTEGER006 = 1 To INTEGER010
  376.             If (Upper(TSTRING003(98)) == Upper(TSTRING011(INTEGER006))) Then
  377.                 GetAltUser U_RecNum(STRING014)
  378.                 U_Sec = TSTRING003(97)
  379.                 PutUser
  380.                 Delete STRING001
  381.                 Delete STRING002
  382.             Endif
  383.         Next
  384.     Endif
  385.     :LABEL015
  386.     If (INTEGER008 == TSTRING003(96)) Then
  387.         GetAltUser U_RecNum(STRING014)
  388.         U_Sec = TSTRING003(98)
  389.         U_ExpSec = TSTRING003(98)
  390.         PutUser
  391.         Delete STRING002
  392.         Delete STRING001
  393.     Endif
  394.     Return
  395.     :LABEL016
  396.     Color 15
  397.     AnsiPos 1, TSTRING003(135)
  398.     ClrEol
  399.     Print TSTRING007(37) + " "
  400.     BOOLEAN001 = 0
  401.     STRING008 = ""
  402.     :LABEL017
  403.     If (BOOLEAN001) Goto LABEL018
  404.     STRING008 = Inkey()
  405.     If (Len(STRING008)) Then
  406.         If (Upper(STRING008) == "Y") Then
  407.             Color 15
  408.             AnsiPos 1, TSTRING003(135)
  409.             ClrEol
  410.             Print TSTRING007(38)
  411.             InputStr " _", STRING009, 15, TSTRING003(116), Mask_Ascii(), 0
  412.             If (STRING009 <> "") Then
  413.                 INTEGER011 = INTEGER011 + 1
  414.                 TSTRING012(INTEGER011) = STRING009
  415.                 BOOLEAN001 = 1
  416.             Endif
  417.         Endif
  418.         If (Upper(STRING008) == "N") Then
  419.             AnsiPos 1, TSTRING003(135)
  420.             Color 15
  421.             ClrEol
  422.             BOOLEAN001 = 1
  423.         Endif
  424.     Endif
  425.     Goto LABEL017
  426.     :LABEL018
  427.     Return
  428.  
  429. ;------------------------------------------------------------------------------
  430. ;
  431. ; Usage report (before postprocessing)
  432. ;
  433. ; ■ Statements used :
  434. ;
  435. ;    7       End
  436. ;    2       Cls
  437. ;    3       ClrEol
  438. ;    1       More
  439. ;    6       Color 
  440. ;    90      Goto 
  441. ;    90      Let 
  442. ;    29      Print 
  443. ;    4       PrintLn 
  444. ;    68      If 
  445. ;    2       DispFile 
  446. ;    1       FCreate 
  447. ;    9       FOpen 
  448. ;    1       FAppend 
  449. ;    11      FClose 
  450. ;    27      FGet 
  451. ;    12      FPutLn 
  452. ;    3       PutUser
  453. ;    7       Delete 
  454. ;    1       InputStr 
  455. ;    7       Gosub 
  456. ;    8       Return
  457. ;    1       Shell 
  458. ;    31      AnsiPos 
  459. ;    3       GetAltUser 
  460. ;
  461. ;
  462. ; ■ Functions used :
  463. ;
  464. ;    6       *
  465. ;    81      +
  466. ;    7       -
  467. ;    39      ==
  468. ;    6       <>
  469. ;    16      <
  470. ;    15      <=
  471. ;    2       >
  472. ;    30      >=
  473. ;    60      !
  474. ;    30      &&
  475. ;    17      ||
  476. ;    3       Len(
  477. ;    8       Upper()
  478. ;    1       Mid()
  479. ;    2       Left()
  480. ;    1       Chr()
  481. ;    3       U_Name()
  482. ;    2       Inkey()
  483. ;    1       Mask_Ascii()
  484. ;    18      PPEPath()
  485. ;    4       Exist()
  486. ;    3       U_RecNum()
  487. ;
  488. ;------------------------------------------------------------------------------
  489. ;
  490. ; Analysis flags : WRS
  491. ;
  492. ; W - Write user ■ 5
  493. ;     Program writes a user record. Although this may be normal for a
  494. ;     User Editor, it may also be a way to modify an account level.
  495. ;     ■ Search for : PUTUSER
  496. ;
  497. ; R - Read user ■ 5
  498. ;     User records are read, this may signify that someone wants to get
  499. ;     various informations about a user (for example his password), but
  500. ;     this may also be normal for a program accessing user records (for
  501. ;     example a User Editor)
  502. ;     ■ Search for : GETALTUSER
  503. ;
  504. ; S - Shell to DOS ■ 5
  505. ;     This may be normal if the PPE need to execute an external command,
  506. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  507. ;     or usefull (sorting, maintenance,...). Check!
  508. ;     ■ Search for : SHELL
  509. ;
  510. ;------------------------------------------------------------------------------
  511. ;
  512. ; Postprocessing report
  513. ;
  514. ;    14      For/Next
  515. ;    1       While/EndWhile
  516. ;    32      If/Then or If/Then/Else
  517. ;    2       Select Case
  518. ;
  519. ;------------------------------------------------------------------------------
  520. ;                 AEGiS Corp - Break the routines, code against the machines!
  521. ;------------------------------------------------------------------------------
  522.